<?php
# 文件名称:database.php
# MetInfo在线反馈系统 
# Copyright (C) 长沙米拓信息技术有限公司 (http://www.metinfo.cn). All rights reserved.
defined( '_SYS' ) or die( 'No direct script access allowed' );
class C_sessionStorageDatabase extends C_sessionStorage
{
	var $_data = null;
	function C_sessionStorageDatabase( $options = array() )
	{
		$this->register($options);
	}
	function open($save_path, $session_name)
	{
		return true;
	}
	function close()
	{
		return true;
	}
 	/**
 	 * 从数据库读取session数据
 	 *
 	 */
	function read($id)
	{
		$db = C_loader::getDBO();
		if(!$db->connected()) {
			return false;
		}
		$session = & C_loader::getDTO('session');
		$session->load($id);
		if($session->time < time()) return false;
		return (string)$session->data;
	}
	/**
	 * 将session数据写入数据库
	 *
	 */
	function write($id, $session_data)
	{		
		$SYS = &get_instance();		
		$db =C_loader::getDBO();
		$db->C_mysql($db->dbsession);
		if(!$db->connected()) {
			return false;
		}
		$sess_life   = $SYS->config->item('lifetime');		
		$expiry = time() + $sess_life; //过期时间 
		$session = & C_table::getInstance('session');
		$opt = $session->load($id);
		$session->data = $session_data;		
		$session->guest = 1;
		$user = $SYS->session->get('admin_name');
		if($user!=null)
		{
			
			$session->userid = $user->id;
			$session->username = $user->admin_name;
			$session->guest = 0;
		}		
		$session->time = $expiry;		
		$session->store(false,$opt);
		$db->close();
		return true;
	}
	/**
	  * 销毁session
	  *
	  */
	function destroy($id)
	{
		$db =C_loader::getDBO();
		if(!$db->connected()) {
			return false;
		}
		$session = & C_table::getInstance('session');
		$session->delete($id);
		return true;
	}
	/**
	 * 回收表中过期session
	 *
	 */
	function gc($maxlifetime)
	{
		$db = C_loader::getDBO();
		if(!$db->connected()) {
			return false;
		}
		$session = & C_table::getInstance('session');
		$session->purge($maxlifetime);
		return true;
	}
}
# 本程序是一个开源系统,使用时请你仔细阅读使用协议,商业用途请自觉购买商业授权.
# Copyright (C) 长沙米拓信息技术有限公司 (http://www.metinfo.cn). All rights reserved.
?>